<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>mtlb_find</title>
  </head>
  <body bgcolor="#FFFFFF">
    <center>M2SCI function</center>
    <div align="right">Last update : 08/04/2004</div>
    <p>
      <b>mtlb_find</b> - Matlab find emulation function</p>
    <h3>
      <font color="blue">Description</font>
    </h3>
    <p>Matlab and Scilab <tt>
        <b>find</b>
      </tt> behave differently in some particular cases:</p>
    <dl>
      <dd>
        <b></b>
        <dd>
          <li>
            <b>
              <font color="maroon"></font>
            </b>
        With column vectors and matrices as input: Matlab <tt>
              <b>find</b>
            </tt> returns column
	vectors while Scilab returns row vectors.
        </li>
          <li>
            <b>
              <font color="maroon"></font>
            </b>
        When called with three outputs: Matlab <tt>
              <b>find</b>
            </tt> can have three outputs but Scilab not.
        </li>
        </dd>
      </dd>
    </dl>
    <p>
    The function <tt>
        <b>[i[,j[,v]]] = mtlb_find(B)</b>
      </tt> is used by
    <tt>
        <b>mfile2sci</b>
      </tt> to replace <tt>
        <b>[i[,j[,v]]] = find(B)</b>
      </tt> when it was not
    possible to know what was the input while porting Matlab code to Scilab. This function will
    determine the correct semantic at run time. If you want to have a
    more efficient code it is possible to replace <tt>
        <b>mtlb_find</b>
      </tt> calls:
    </p>
    <dl>
      <dd>
        <b></b>
        <dd>
          <li>
            <b>
              <font color="maroon"></font>
            </b>
        When called with one output, if <tt>
              <b>B</b>
            </tt> is a row vector 
        <tt>
              <b>i = mtlb_find(B)</b>
            </tt> may be replaced by <tt>
              <b>i = find(B)</b>
            </tt>
          </li>
          <li>
            <b>
              <font color="maroon"></font>
            </b>
        When called with one output, if <tt>
              <b>B</b>
            </tt> is not a row vector 
        <tt>
              <b>i = mtlb_find(B)</b>
            </tt> may be replaced by <tt>
              <b>i = matrix(find(B),-1,1)</b>
            </tt>
          </li>
          <li>
            <b>
              <font color="maroon"></font>
            </b>
        When called with two outputs, if <tt>
              <b>B</b>
            </tt> is a row vector 
        <tt>
              <b>[i,j] = mtlb_find(B)</b>
            </tt> may be replaced by <tt>
              <b>[i,j] = find(B)</b>
            </tt>
          </li>
          <li>
            <b>
              <font color="maroon"></font>
            </b>
        When called with two outputs, if <tt>
              <b>B</b>
            </tt> is not a row vector 
        <tt>
              <b>[i,j] = mtlb_find(B)</b>
            </tt> may be replaced by
	<tt>
              <b>[i,j] = find(B);i = matrix(i,-1,1);j = matrix(j,-1,1);</b>
            </tt>
          </li>
        </dd>
      </dd>
    </dl>
    <p>Caution: <tt>
        <b>mtlb_find</b>
      </tt> has not to be used for hand coded functions.</p>
    <h3>
      <font color="blue">Authors</font>
    </h3>
    <dl>
      <dd>
        <b></b>V.C.</dd>
    </dl>
  </body>
</html>
